/*
 * ========================================
 * RISC-V 最小操作系统格式化输出头文件
 * ========================================
 * 
 * 这个文件定义了格式化输出系统的接口。
 * 提供类似标准库printf的功能，但专为内核使用。
 * 
 * 支持的功能：
 * - 基本格式化：%d, %x, %s, %c, %%
 * - 数字转换：十进制、十六进制
 * - 字符串输出
 * - 字符输出
 * - 清屏功能
 * - 光标控制
 */

#ifndef PRINTF_H
#define PRINTF_H

// ========================================
// 基本类型定义
// ========================================

// 颜色定义（ANSI转义序列）
#define COLOR_BLACK    0
#define COLOR_RED      1
#define COLOR_GREEN    2
#define COLOR_YELLOW   3
#define COLOR_BLUE     4
#define COLOR_MAGENTA  5
#define COLOR_CYAN     6
#define COLOR_WHITE    7

// ========================================
// 格式化输出函数
// ========================================

// 格式化输出到控制台
// fmt: 格式字符串
// ...: 可变参数
// 返回: 输出的字符数
int printf(const char *fmt, ...);

// 格式化输出到字符串缓冲区
// buf: 目标缓冲区
// fmt: 格式字符串
// ...: 可变参数
// 返回: 输出的字符数
int sprintf(char *buf, const char *fmt, ...);

// ========================================
// 控制台控制函数
// ========================================

// 清屏功能
void clear_screen(void);

// 光标定位
void goto_xy(int x, int y);

// 清除当前行
void clear_line(void);

// ========================================
// 颜色输出函数
// ========================================

// 带颜色的格式化输出
// color: 颜色代码
// fmt: 格式字符串
// ...: 可变参数
void printf_color(int color, const char *fmt, ...);

// ========================================
// 底层输出函数
// ========================================

// 输出单个字符到控制台
void console_putc(char c);

// 输出字符串到控制台
void console_puts(const char *s);

#endif // PRINTF_H
